package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
	"time"
)

func main() {
	http.HandleFunc("/date", func(w http.ResponseWriter, r *http.Request) {
		io.Copy(os.Stdout, r.Body)
		w.Write([]byte(time.Now().Format("2006-01-02 15:04:05")))
	})
	// C:\Go\codereview.cfg
	http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request) {
		r.ParseMultipartForm(1024 * 1024) // 接收文件过程中最大使用内存

		fmt.Println("f", r.MultipartForm.File)
		if fileheaders, ok := r.MultipartForm.File["a"]; ok {
			for _, fileheader := range fileheaders {
				fmt.Println("filename: ", fileheader.Filename)
				file, _ := fileheader.Open()
				io.Copy(os.Stdout, file)

			}
		}

		fmt.Println("v", r.MultipartForm.Value)

		fmt.Println(r.Form)
		fmt.Println(r.PostForm)

	})

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Println(strings.Repeat("-", 30))
		fmt.Println(r.Method)
		// 提交数据方式
		/*
			在URL中传递数据
			url?argname1=argvalue1&argname2=argvalue2
		*/
		r.ParseForm()                // 参数解析
		fmt.Println(r.Form)          // 接收的参数类型都说string
		fmt.Println(r.Form.Get("x")) // 只返回第一个参数
		fmt.Println(r.Form["x"])     // 获取所有参数

		fmt.Println(r.PostForm)
		// 通过body提交数据
		/*
			curl -d "xxxx"
		*/
		/*
			body中数据格式
				application/x-www-form-urlencoded	x=1&y=2
				application/json					{x=1,y=2}
				application/form-data
		*/
		w.Write([]byte(time.Now().Format("2006-01-02 15:04:05")))
	})

	http.ListenAndServe("127.0.0.1:9999", nil)
}
